<?php

/**
 * verwaltung actions.
 *
 * @package    adminslittlehelper
 * @subpackage verwaltung
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 2692 2006-11-15 21:03:55Z fabien $
 */
class updateHardwareAction extends sfAction
{
  /**
   * Executes index action
   *
   */
  public function execute()
  {
    if (!$this->getRequestParameter('hid'))
    {
      $hardware_item = new Rechner();
    }
    else
    {
      $hardware_item = RechnerPeer::retrieveByPk($this->getRequestParameter('hid'));
      $this->setFlash('errMessage', 'Es ist ein interner Fehler aufgetaucht. Bitte wenden Sie sich an die Putzfrau.');
    }

    $hardware_item->setId($this->getRequestParameter('hid'));
    $hardware_item->setStandortId($this->getRequestParameter('id'));
    $hardware_item->setBenutzerId(1);
    $hardware_item->setBezeichnung($this->getRequestParameter('bezeichnung'));
    $hardware_item->setBemerkung($this->getRequestParameter('bemerkung'));
    if ($this->getRequestParameter('updated_on'))
    {
      list($d, $m, $y) = sfI18N::getDateForCulture($this->getRequestParameter('updated_on'), $this->getUser()->getCulture());
      $hardware_item->setUpdatedOn("$y-$m-$d");
    }
	
    try{
    	$hardware_item->save();
    	bwUtils::saveAddFields($hardware_item);
    	$this->setFlash('errMessage', 'Daten erfolgreich gespeichert.');
    }catch(Exception $e){
    	$this->setFlash('errMessage', 'Es ist ein interner Fehler aufgetaucht. Bitte wenden Sie sich an die Putzfrau.');
    }
    
    if ($this->getRequestParameter('hwuser_id_old') == '')
    {
      $hardware_user_item = new ArbeitsplatznutzerHasRechner();
    }
    else
    {
      sfContext::getInstance()->getLogger()->debug("ArbeitsplatznutzerHasRechnerPeer::retrieveByPk(".$this->getRequestParameter('hwuser_id_old').",".$hardware_item->getId().")");
      $hardware_user_item = ArbeitsplatznutzerHasRechnerPeer::retrieveByPk($this->getRequestParameter('hwuser_id_old'), $hardware_item->getId());
      $this->forward404Unless($hardware_user_item);
    }  
    
    $hardware_user_item->setArbeitsplatznutzerId($this->getRequestParameter('hwuser_id'));
    $hardware_user_item->setRechnerId($hardware_item->getId());
    
    sfContext::getInstance()->getLogger()->debug("hardware_user_item(".$this->getRequestParameter('hwuser_id').",".$hardware_item->getId().")");
    
	if($this->getRequestParameter('hwuser_id_old') != ''){    
		/**
	     * DB Hack, da Methode object.save() falschen SQl Query bereitstellt bei einem zusammengesetzten PM;
	     */
	    $connection = Propel::getConnection();
		$query = 'UPDATE %s SET Arbeitsplatznutzer_id = %s WHERE Rechner_id = %s';
		$query = sprintf($query, ArbeitsplatznutzerHasRechnerPeer::TABLE_NAME, $hardware_user_item->getArbeitsplatznutzerId(),$hardware_user_item->getRechnerId());
		$statement = $connection->prepareStatement($query);
		$result = $statement->executeQuery();
	}else{
		$hardware_user_item->save();
    }
    $hid_id = $hardware_item->getId();
    
    return $this->redirect('management/showOverview?id='.$this->getRequestParameter('id').'&hid='.$hid_id.'&dest=location');
  }
}
